import { doLogin } from '../../api/userApi'
// 引入本地存储session中的设置方法,把token设置到浏览器中
 import {
      setToken ,
      delToken
    } from '../../utils/auth'
export default {
    state:{
        username:'',
        token:'',
        uid:0,
    },
    // 同步接收commit的值
    mutations:{
        AddsetToken(state,data){
            // 必须是请求的token值可以放在页面中,vuex中的token值存储不到页面中,暂时只是data.token,
            // 如果有vuex的token值存储方法的话,这两种都可以~
           setToken(data.token)
            // 参数1:vuex本来存储的空对象
            // 参数2:接收请求过来的数据
            state.username = data.username
            state.token = data.token
            state.uid = data.uid
        },
        // 用户退出
        // logout
        logout(state,data){
            // 删除本地token值
            delToken()
            state.username = ""
            state.token = ""
            state.uid = ""
        }
    },
    // vuex的actions属性是用来处理异步方法的，通过提交mutations实现。
    actions:{
        // 返回的是promise数据,组件中请求,也需要异步请求
       async loginAction({commit},{username,password}){
           let ret  = await doLogin(username,password)
            // 登录成功后让token存储到vuex的store中
            // 如果正确的话同步把数据放在store中
            ret.code === 0 && commit('AddsetToken',ret.data)
           return ret.code === 0 ? true : false
           // 存储在vuex中的数据的code码进行判断,如果正确返回true,错误返回false
           // 然后在我们的的组件中请求这个数据,进行下一步的执行
       } 
    }
}